﻿using System;
using System.Collections.Generic;
using System.Collections;

namespace RedisDotNet.Collections
{
    public class RedisDictionary<T> : IDictionary<string, T>
    {
        #region Constructors

        /// <summary>
        /// Initializes a new instance of the 
        /// <see cref="RedisDictionary&lt;T&gt;"/> class against the entire
        /// key space.
        /// </summary>
        /// <param name="client">The client.</param>
        public RedisDictionary(IRedisClient client)
        {
            throw new NotImplementedException();
        }

        ///// <summary>
        ///// Initializes a new instance of the 
        ///// <see cref="RedisDictionary&lt;T&gt;"/> class against one key to 
        ///// be used as a redis hash
        ///// </summary>
        ///// <param name="client">The client.</param>
        //public RedisDictionary(IRedisClient client, string key)
        //{
            //throw new NotImplementedException();
        //}

        #endregion

        #region IDictionary<string,T> Members

        public void Add(string key, T value)
        {
            throw new NotImplementedException();
        }

        public bool ContainsKey(string key)
        {
            throw new NotImplementedException();
        }

        public ICollection<string> Keys
        {
            get { throw new NotImplementedException(); }
        }

        public bool Remove(string key)
        {
            throw new NotImplementedException();
        }

        public bool TryGetValue(string key, out T value)
        {
            throw new NotImplementedException();
        }

        public ICollection<T> Values
        {
            get { throw new NotImplementedException(); }
        }

        public T this[string key]
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        #endregion

        #region ICollection<KeyValuePair<string,T>> Members

        public void Add(KeyValuePair<string, T> item)
        {
            throw new NotImplementedException();
        }

        public void Clear()
        {
            // client.Flush();
            throw new NotImplementedException();
        }

        public bool Contains(KeyValuePair<string, T> item)
        {
            // get field and compare value
            throw new NotImplementedException();
        }

        public void CopyTo(KeyValuePair<string, T>[] array, int arrayIndex)
        {
            throw new NotImplementedException();
        }

        public int Count
        {
            get
            {
                // db size?
                throw new NotImplementedException();
            }
        }

        public bool IsReadOnly
        {
            get
            {
                throw new NotImplementedException();
            }
        }

        public bool Remove(KeyValuePair<string, T> item)
        {
            throw new NotImplementedException();
        }

        #endregion

        #region IEnumerable<KeyValuePair<string,T>> Members

        public IEnumerator<KeyValuePair<string, T>> GetEnumerator()
        {
            throw new NotImplementedException();
        }

        #endregion

        #region IEnumerable Members

        IEnumerator IEnumerable.GetEnumerator()
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
